The present disclosure relates to a mechanism of restoring failed services executing on virtual machines using snapshots and logged interservice API calls.
Computer systems employ virtual machines to perform various tasks such as services. Their implementations may involve specialized hardware, software, or a combination of hardware and software. To back up a virtual machine, a computer system captures “snapshots” of the virtual machine to preserve the state of the virtual machine at a point in time when the snapshot was taken. The snapshot includes state information of the virtual machine and may also include information of the virtual machine's storage devices. In turn, if the virtual machine fails, the computer system uses the snapshot to restore the virtual machine back to the point in time at which the snapshot was taken.
A service, as that term is used herein, refers to a piece of software that is executed to provide predetermined functionality(ies) (such as the retrieval of specified information or the execution of a set of operations). Typically, services are reused by different clients for different purposes. Typically, services include policies that should control usage of the service (for example, control based on the identity of the client requesting the service. Typically, a service provides a mechanism to access to one or more capabilities, where the access is provided using a prescribed interface and the access is performed to be consistent with constraints and policies as specified by a service description.
A snapshot, as that term is used herein, refers to a set of data that includes information indicative of the state of a system (such, as a service and/or the systems supporting a service) at a particular point in time. Typically, a snapshot includes information indicative of: (i) the system whose state is being captured; and (ii) the date/time at which the snapshot captured the state of the system.
Virtual machines that execute services send messages to each other via “interservice” application protocol interface (API) calls. A common API used by the virtual machines is a representational state transfer (REST) or RESTful API. The RESTful API is a web services-based API that provides interoperability between computer systems. REST-compliant web services allow requesting systems to access and manipulate textual representations of web resources using a uniform and predefined set of stateless operations. A virtual machine uses the RESTful API to send calls (requests) to another virtual machine that, in turn, may cause the other virtual machine to send a different API call to yet another virtual machine.